animus-cli: first-class headless/server secret-key source (auto hard-errors; config-file user-key not honored by all paths) - #340
Conversation
…errors; config-file user-key not honored by all paths)
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Shooksie
left a comment
There was a problem hiding this comment.
This cannot merge as-is: GitHub reports conflicts and rustfmt failures, and current main already contains part of the headless secret-key behavior. Rebase onto current main, reduce the diff to the still-missing project/global secret-store selection behavior, demonstrate compatibility with the Portal durable key path, and rerun workspace fmt/clippy/check/tests. Do not overwrite the newer secret-key source implementation from current main while resolving conflicts.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
crates/orchestrator-core/src/secret_device_store.rs(PR headanimus/TASK-632againstmain) — exact symptom: GitHub reports"mergeable": false, so this implementation still cannot be integrated with the current base. REQUIRED CHANGE: rebaseanimus/TASK-632onto the currentmainand resolve the secret-store conflicts by preserving main's newer behavior while retaining only this task's project/global config selection and headless key-source changes. Verify by pushing the rebased head and confirminggithub_pr_getreportsmergeable: trueand the workspacecargo-checkjob remains successful. -
crates/orchestrator-cli/src/services/operations/ops_secret.rs:66—let source = orchestrator_core::build_backend_for_project(&scope, scoped_root.to_path_buf(), source_name, project_root);is one of several newly added lines that does not match rustfmt output; the requiredrustfmtcheck is currently failing. REQUIRED CHANGE: runcargo fmt --allon the rebased branch and commit the formatter's edits across all touched Rust files (including the long calls/re-export and the import ordering insecret_device_store.rs). Verify withcargo fmt --all -- --check; it must exit 0, and the GitHubrustfmtcheck must be green.
What is good: the revised change is focused on the actual construction seams, routes OAuth completion and CLI consumers through a project-aware builder, preserves the conservative keyring default when no server key is configured, and adds useful regression coverage for env, project config, and durable key-file behavior. The workspace cargo-check job is green on this head.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
animus/TASK-632branch integration againstmain— exact symptom: GitHub reportsmergeable: falsefor PR #340 after the synchronize event. REQUIRED CHANGE: rebaseanimus/TASK-632onto the currentmain, resolve every conflict while preserving main's newer secret-store behavior, and push the rebased branch. Verify by fetching PR #340 again and confirming GitHub reportsmergeable: true(and that the required checks run on the rebased head). -
crates/animus-mcp-oauth/src/config.rs:build_secret_store_at— offending code:fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {. REQUIRED CHANGE: runcargo fmt --allon the rebased branch and commit every formatter edit, including this signature and the longbuild_secret_store_for_project/build_backend_for_projectcalls and re-export touched by this PR. Verify withcargo fmt --all -- --check; it must exit 0, and the GitHubrustfmtcheck must concludesuccess(it currently concludesfailure).
The project/global secret configuration plumbing and the focused OAuth regression test are directionally aligned with TASK-632; once the branch is conflict-free and formatter-clean, the remaining cargo/clippy checks can give a reliable signal on the implementation.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
PR mergeability / animus/TASK-632— exact symptom: GitHub currently reportsmergeable: falseagainst basemain, so this head still cannot be merged after the requested rebase. REQUIRED CHANGE: rebaseanimus/TASK-632onto the currentmain, resolve every conflict while preserving main's newer secret-store behavior, and force-push the rebased head. Verify by fetching PR #340 again and confirming it reportsmergeable: true. -
crates/animus-mcp-oauth/src/config.rs(build_secret_store_at) —fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {remains unformatted, and the requiredrustfmtcheck is failing on head666962126a83be9adfbdb89eb42c7b5a488d124a. REQUIRED CHANGE: runcargo fmt --allon the rebased branch and commit all formatter edits, including this signature and the longbuild_secret_store_for_projectcall. Verify withcargo fmt --all -- --check; it must exit 0, and the GitHubrustfmtcheck must rerun with conclusionsuccess. -
crates/orchestrator-cli/src/services/operations/ops_secret.rs(handle_migrate) —let source = orchestrator_core::build_backend_for_project(&scope, scoped_root.to_path_buf(), source_name, project_root);and the matchingtargetcall remain in the pre-rustfmt layout while CI reportsrustfmt: failure. REQUIRED CHANGE: include the formatter-produced multiline layout for both builder calls in the same formatting commit; do not hand-format only one file. Verify withcargo fmt --all -- --checkand confirm no formatter diff remains.
The project-aware secret-store seam, OAuth regression coverage, and explicit headless key-source behavior are directionally aligned with TASK-632; once the branch is conflict-free and fully formatted, the substantive checks can provide a trustworthy signal.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
crates/orchestrator-core/src/secret_device_store.rs/ branch integration againstmain— exact symptom: GitHub reports"mergeable": falsefor current head3d5f1aad77f1061528c5d873292b0f1b3bdad71f, so the updated implementation still cannot be integrated into the base branch. REQUIRED CHANGE: rebaseanimus/TASK-632onto currentmain, resolve every conflict in the secret-store implementation while preserving main's newer behavior, and push the rebased result. Verify by fetching PR #340 again and confirmingmergeable: true, then allow all required checks to complete on that exact rebased SHA. -
crates/animus-mcp-oauth/src/config.rs:build_secret_store_at— offending code:fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {; the requiredrustfmtcheck on head3d5f1aad77f1061528c5d873292b0f1b3bdad71fconcludesfailure. REQUIRED CHANGE: runcargo fmt --alland commit the formatter-produced layout for this signature and every other touched Rust file, including the long project-aware builder calls and re-export/import ordering. Verify withcargo fmt --all -- --checkexiting 0 and the GitHubrustfmtcheck concludingsuccesson the pushed SHA. -
crates/orchestrator-cli/src/services/operations/ops_secret.rs:handle_migrate— offending code:let source = orchestrator_core::build_backend_for_project(&scope, scoped_root.to_path_buf(), source_name, project_root);(and the matchingtargetcall) remains in a layout rejected by rustfmt. REQUIRED CHANGE: include rustfmt's multiline rewrite for bothbuild_backend_for_projectcalls in the same formatting commit rather than hand-fixing only the OAuth file. Verify withcargo fmt --all -- --check; expect no diff and exit status 0.
What is good: the project-aware secret-store seam, OAuth completion plumbing, conservative keyring fallback, and regression tests for durable env/config key material remain well aligned with TASK-632. Once the branch is conflict-free and formatter-clean, the in-progress cargo-check, dependency guardrail, and clippy jobs can provide a trustworthy substantive signal.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
crates/orchestrator-core/src/secret_device_store.rs/animus/TASK-632integration againstmain— exact symptom: GitHub reports"mergeable": falsefor current head6b3aac806d8f58ae80c3d3f6e75e4408146f94c7, so the synchronized branch still cannot be integrated into the current base. REQUIRED CHANGE: rebaseanimus/TASK-632onto currentmain, resolve every secret-store conflict while preserving main's newer key-source behavior, and push the rebased result. Verify by fetching PR #340 again and confirmingmergeable: true, then require all checks to complete successfully on that exact rebased SHA. -
crates/animus-mcp-oauth/src/config.rs:build_secret_store_at— offending code:fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {; the requiredrustfmtcheck on the current head concludesfailure. REQUIRED CHANGE: runcargo fmt --alland commit the complete formatter output across every touched Rust file, including this signature, the long project-aware builder calls, and re-export/import ordering. Verify withcargo fmt --all -- --check; it must exit 0 and the GitHubrustfmtcheck must concludesuccess. -
crates/orchestrator-cli/src/services/operations/ops_secret.rs:handle_migrate— offending code:let source = orchestrator_core::build_backend_for_project(&scope, scoped_root.to_path_buf(), source_name, project_root);(and the equivalenttargetcall) remains in a layout rejected by rustfmt. REQUIRED CHANGE: commit rustfmt's multiline rewrite for both calls in the same formatting pass; do not hand-fix only the OAuth source. Verify withcargo fmt --all -- --check, expecting no formatter diff and exit status 0.
What is good: the project-aware secret-store seam, OAuth completion plumbing, conservative keyring fallback, and regression coverage for durable env/config key material remain well aligned with TASK-632. The workspace cargo-check is green on this head; once the branch is conflict-free and fully formatted, the remaining required checks can provide a trustworthy substantive signal.
…errors; config-file user-key not honored by all paths)
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
crates/orchestrator-core/src/secret_device_store.rs/animus/TASK-632integration againstmain— exact symptom: GitHub reports"mergeable": falsefor current head4dc762686bb9c3104d24d833103efa648d5694a9, so this synchronized branch still cannot be integrated into the current base. REQUIRED CHANGE: rebaseanimus/TASK-632onto currentmain, resolve every secret-store conflict while preserving main's newer key-source behavior, and push the conflict-free result. Verify by fetching PR #340 again and confirmingmergeable: true, then require every check to complete successfully on that exact rebased SHA. -
crates/animus-mcp-oauth/src/config.rs:build_secret_store_at— offending code:fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {; the requiredrustfmtcheck on head4dc762686bb9c3104d24d833103efa648d5694a9concludesfailure. REQUIRED CHANGE: runcargo fmt --alland commit the complete formatter output across every touched Rust file, including this signature, the long project-aware builder calls, and re-export/import ordering. Verify withcargo fmt --all -- --check; it must exit 0 and the GitHubrustfmtcheck must concludesuccess. -
crates/orchestrator-cli/src/services/operations/ops_secret.rs:handle_migrate— offending code:let source = orchestrator_core::build_backend_for_project(&scope, scoped_root.to_path_buf(), source_name, project_root);(and the equivalenttargetcall) remains in a layout rejected by rustfmt. REQUIRED CHANGE: commit rustfmt's multiline rewrite for both calls in the same formatting pass; do not hand-fix only the OAuth source. Verify withcargo fmt --all -- --check, expecting no formatter diff and exit status 0.
What is good: the project-aware secret-store seam, OAuth completion plumbing, conservative keyring fallback, and regression coverage for durable env/config key material remain well aligned with TASK-632. Workspace cargo-check, clippy, docs-sync, and the dependency guardrail are green on this head; once the branch is conflict-free and fully formatted, the remaining signal can be trusted.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
crates/orchestrator-core/src/secret_device_store.rs/ branch integration againstmain— exact symptom: GitHub reports"mergeable": falsefor PR #340 at current headc6a18f7d51c66a437df7907ad11bb99d34e65b55, so the synchronized branch still cannot be integrated with the base. REQUIRED CHANGE: rebaseanimus/TASK-632onto currentmain, resolve every secret-store conflict while preserving main's newer key-source behavior, and push the rebased result. Verify by fetching PR #340 again and confirmingmergeable: true, then require all checks to complete successfully on that exact rebased SHA. -
crates/animus-mcp-oauth/src/config.rs:build_secret_store_at— offending code:fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {; the requiredrustfmtcheck on headc6a18f7d51c66a437df7907ad11bb99d34e65b55concludesfailure. REQUIRED CHANGE: runcargo fmt --alland commit the formatter-produced edits across every touched Rust file, including this signature, long project-aware builder calls, and import/re-export ordering. Verify withcargo fmt --all -- --check; it must exit 0 and the GitHubrustfmtcheck must concludesuccess. -
crates/orchestrator-cli/src/services/operations/ops_secret.rs:handle_migrate— offending code:let source = orchestrator_core::build_backend_for_project(&scope, scoped_root.to_path_buf(), source_name, project_root);(and the matchingtargetcall) remains in a layout rejected by rustfmt. REQUIRED CHANGE: include rustfmt's multiline rewrite for bothbuild_backend_for_projectcalls in the same formatting commit rather than hand-fixing only the OAuth source. Verify withcargo fmt --all -- --check, expecting no formatter diff and exit status 0.
What is good: the project-aware secret-store seam, OAuth completion plumbing, conservative keyring fallback, and regression coverage for durable env/config key material remain aligned with TASK-632; workspace cargo-check and the dependency guardrail are green on this head. Once the branch is conflict-free and formatter-clean, the remaining checks can provide a reliable substantive signal.
…errors; config-file user-key not honored by all paths)
…errors; config-file user-key not honored by all paths)
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
crates/animus-mcp-oauth/src/config.rs:build_secret_store_at—fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {remains unformatted, and the requiredrustfmtcheck is failing on heada44c223b65d5b234024ae6ef499862ed2710cb5d. REQUIRED CHANGE: runcargo fmt --allfrom the workspace root and commit/push the complete formatter output for every touched Rust file; do not hand-format only this signature. Verify withcargo fmt --all -- --check(expected exit code 0) and confirm the GitHubrustfmtcheck succeeds on the new head SHA.
The project-aware secret-store construction, focused OAuth regression coverage, and propagation through the CLI call sites are directionally good and directly address the task's headless/config-file key-source gap.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
crates/animus-mcp-oauth/src/config.rs:build_secret_store_at— offending code:fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {; the requiredrustfmtcheck still concludesfailureon head22762f2a141aab1492fad2ac9ae13f130306254d. REQUIRED CHANGE: runcargo fmt --allat the workspace root and commit/push the complete formatter output across every touched Rust file, including this signature and the long project-aware secret-store builder calls. Verify withcargo fmt --all -- --checkexiting 0 and GitHub'srustfmtcheck concludingsuccesson the new head SHA. -
crates/orchestrator-core/src/secret_device_store.rs/ branch integration — exact symptom: GitHub reportsmergeable: falsefor PR #340 againstmain, so this head cannot be integrated. REQUIRED CHANGE: rebaseanimus/TASK-632onto currentmain, resolve all conflicts while preserving main's newer secret-key behavior and this PR's project-aware configuration plumbing, then push the rebased branch. Verify by fetching PR #340 and confirmingmergeable: true, with all required checks green on that exact SHA.
What is good: the change targets the correct secret-store construction seams, carries project configuration into OAuth and CLI paths, preserves conservative fallback behavior, and adds focused regression coverage for durable environment/config-file key material.
…errors; config-file user-key not honored by all paths)
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
- Branch integration /
crates/orchestrator-core/src/secret_device_store.rs(build_secret_store_for_project): exact symptom: GitHub reportsmergeable: false, and the current head5d959f5738c024861b31336bc3dc820d0506fd9bis still 145 commits behindmain(git rev-list --left-right --count origin/main...HEAD=>145 37;git merge-base --is-ancestor origin/main HEADexits 1). REQUIRED CHANGE: rebaseanimus/TASK-632onto the currentmain, resolve the secret-store conflicts in favor of main's newer behavior while retaining this PR's focused project-aware config plumbing, and force-push the rebased branch. Verify withgit fetch origin main && git merge-base --is-ancestor origin/main HEAD(expected exit 0), confirm GitHub reports the PR mergeable, then wait for every required check to complete successfully.
The latest update does appear to have fixed the prior formatting defect: git diff --check origin/main...HEAD now exits 0, and the added OAuth/project-key-file coverage directly exercises the reported headless configuration path. The remaining integration conflict prevents this revision from being safely merged.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
crates/animus-mcp-oauth/src/config.rs(build_secret_store_at) — the new signature is committed as the single unformatted linefn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {, and the requiredrustfmtcheck is failing on headaaf72cba82a95c4f76edb3050f9940a36cd816b7. REQUIRED CHANGE: run the workspace formatter and commit its output on this branch (including rustfmt's multiline rewrite ofbuild_secret_store_atand any other changed Rust blocks it reports). Verification: runcargo fmt --all -- --check; it must exit 0, and the GitHubrustfmtcheck must complete successfully before merge.
The substantive direction is good: the OAuth path now uses the project-aware secret-store builder, project/global configuration precedence is covered, and the added reopen tests exercise the separate OAuth-completion invocation behavior rather than only an in-memory round trip.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
crates/animus-mcp-oauth/src/config.rs:build_secret_store_at— offending code:fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {; the requiredrustfmtcheck on head337d354600a96fd103e252205e3dfbdfd993bb59concludesfailure, and this signature plus the long builder call remain in the pre-rustfmt layout. REQUIRED CHANGE: runcargo fmt --allon the existinganimus/TASK-632branch and commit the complete formatter output across every touched Rust file, including this function and bothbuild_backend_for_projectcalls incrates/orchestrator-cli/src/services/operations/ops_secret.rs::handle_migrate. Verify withcargo fmt --all -- --check; it must exit 0, then push and confirm GitHub'srustfmtcheck concludessuccesson the new head SHA.
What is good: the substantive implementation remains focused on TASK-632's missing project-aware secret-store construction, preserves the conservative fallback behavior, and includes broad regression coverage for durable env/config key material and OAuth store reopening.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
crates/animus-mcp-oauth/src/config.rs:61(build_secret_store_at) —fn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {remains in the unformatted one-line form, and the requiredrustfmtcheck is failing on heade820e82a7fdbbeb38b2be478cc517d82f352c4a7. REQUIRED CHANGE: runcargo fmt --allon this exact branch and commit/push rustfmt's multiline rewrite of this function signature and the longbuild_secret_store_for_projectcall immediately below it. Verify withcargo fmt --all -- --check; it must exit 0, and GitHub'srustfmtcheck must complete successfully on the pushed SHA. -
crates/orchestrator-cli/src/services/operations/ops_secret.rs:66(handle_migrate) —orchestrator_core::build_backend_for_project(&scope, scoped_root.to_path_buf(), source_name, project_root);and the equivalenttargetcall remain on overlong lines rejected by rustfmt. REQUIRED CHANGE: include rustfmt's multiline rewrites of bothbuild_backend_for_projectcalls in the same formatting commit; do not hand-format only one call or omit formatter changes in another touched Rust file. Verify withcargo fmt --all -- --check(expected exit code 0) and confirm the GitHubrustfmtcheck is green before requesting another review.
The project-aware secret-store selection and its OAuth regression coverage remain focused on TASK-632 and are the right substantive direction; this update is blocked only because the formatter fix requested previously still has not landed completely.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
-
crates/animus-mcp-oauth/src/config.rsandcrates/orchestrator-core/src/secret_keysource.rs(branch integration againstmain) — exact symptom: GitHub reports"mergeable": false, and a localgit merge-tree --write-tree review/main review/headreportsCONFLICT (content)in both named files on head22890d676df14873e0d0045fc67d367ec59476fe. REQUIRED CHANGE: rebaseanimus/TASK-632onto the currentmainand resolve both conflicts, preserving current main's secret-source behavior while retaining this task's project/global configuration selection. Verify withgit merge-tree --write-tree origin/main HEADexiting 0, then fetch PR #340 and confirm it reportsmergeable: true. -
crates/animus-mcp-oauth/src/config.rs:build_secret_store_atandcrates/orchestrator-cli/src/services/operations/ops_secret.rs:handle_migrate— offending code remainsfn build_secret_store_at(project_root: &Path, scoped_root: impl Into<std::path::PathBuf>) -> Arc<dyn SecretStore> {andorchestrator_core::build_backend_for_project(&scope, scoped_root.to_path_buf(), source_name, project_root);; the requiredrustfmtcheck concludesfailureon this exact head. REQUIRED CHANGE: runcargo fmt --allafter the rebase and commit the complete formatter output, including the multiline function signature, thebuild_secret_store_for_projectcall, and bothbuild_backend_for_projectcalls rather than another partial formatting edit. Verify withcargo fmt --all -- --checkexiting 0 and the GitHubrustfmtjob concludingsuccesson the pushed SHA.
What is good: the project-aware construction seam, OAuth completion plumbing, conservative fallback behavior, and regression coverage for durable env/config key material remain aligned with TASK-632; workspace cargo-check and docs-sync already pass on this head.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CHANGES REQUESTED
crates/animus-mcp-oauth/src/config.rs:build_secret_storeandcrates/orchestrator-core/src/secret_keysource.rs:UserKeySource::resolve— exact symptom: GitHub reports this head (156e32bc3eefb4a6273223b41508a0eb9d58536c) asmergeable: falseagainstmain; the branch still replaces main's currentbuild_secret_storeimplementation and carries a divergentUserKeySource::resolve(for example, the head containsif !raw.trim().is_empty()while current main has advanced independently in the same function).REQUIRED CHANGE:rebaseanimus/TASK-632onto currentmain, resolve the content conflicts in these functions by retaining main's newer secret-source/config-source behavior and then reapply only TASK-632's project-aware secret-store selection (build_secret_store_for_project) and headless key-file handling. Do not merge either whole-file side. Verify withgit merge-tree --write-tree origin/main HEAD(expected: exit 0 and a tree id, with no conflict diagnostics), then runcargo fmt --all -- --check,cargo test -p orchestrator-core -p animus-mcp-oauth, andcargo check --workspace(all expected to exit 0). Push the resolved rebase and wait for every required GitHub check to complete successfully.
The project-aware OAuth store construction, durable key-file test coverage, and focused documentation are directionally strong and address the task's core failure mode. The PR cannot be merged until it is conflict-free and the currently pending Rust checks complete green.
…errors; config-file user-key not honored by all paths)
There was a problem hiding this comment.
VERDICT: CLOSE
crates/animus-mcp-oauth/src/config.rs:build_secret_storeandcrates/orchestrator-core/src/secret_keysource.rs:UserKeySource::resolve— GitHub reports the updated head as"mergeable": false, "rebaseable": false, "mergeable_state": "dirty"; this means the synchronized branch still conflicts with currentmainand cannot be safely integrated. REQUIRED CHANGE: recreate or rebase the TASK-632 change on currentmain(6306625cc6bb4d6a562a3290bb15c38135c045ec), manually preserve main's newer secret-source/config-source behavior in those functions, and reapply only the project-aware secret-store selection and headless key-file handling rather than accepting either whole-file side. Verify withgit merge-tree --write-tree origin/main HEAD(must exit successfully without conflicts), then runcargo fmt --all -- --check,cargo test -p orchestrator-core -p animus-mcp-oauth, andcargo check --workspace; all commands and required GitHub checks must succeed.
The intended implementation is otherwise well targeted: it routes OAuth, secret CLI, doctor, and daemon secret-store construction through project-aware factories, adds direct regression coverage for separate OAuth completion processes, and documents the headless key-source precedence clearly.
Automated change for TASK-632 via the Animus coding workflow (deterministic git on a shared ephemeral node).